# _*_ coding: UTF-8 _*_
# @Time     : 2021/2/23 下午 05:13
# @Author   : Li Jie
# @Site     : http://www.hzdledu.com/
# @File     : process_test4.py
# @Software : PyCharm

from multiprocessing import Pool
import time
import os


# 使用进程池
def foo(name):
    print(f'子进程:{os.getpid()}执行task:{name}')
    time.sleep(1)  # 每个子进程休眠1秒


def process_main():
    print(f'父进程:{os.getpid()}开始执行...')
    pool = Pool(3)  # 定义进程池，最大进程数为3
    for i in range(10):  # 循环10次
        pool.apply_async(foo, args=(i,))  # 以非阻塞的方式调用foo函数
    print('等待所有子进程结束...')
    pool.close()  # 关闭进程池，关闭后不再接受新的请求
    pool.join()  # 等待子进程结束
    print('所有子进程结束...')


if __name__ == '__main__':
    process_main()
